﻿using Summer.Object;

#region License
/*
 *  Copyright (c) Dumuzi.cn 2009 , All rights reserved.
 *  CLR Version: 2.0.50727.4927
 *  NameSpace: Summer.Core.Ioc
 *  Author:Edwin Tai,戴佳顺
 *  Msn:edwin19861218@hotmail.com
 *  QQ: 1961218
 *  Date:2009-11-03 22:01:29
 *  Licensed under the Microsoft Public License (Ms-PL)
 *  This license governs use of the accompanying software. 
 *  If you use the software, you accept this license.
 *  If you do not accept the license, do not use the software.
 */
#endregion

namespace Summer.Core.Ioc
{
    /// <summary>
    /// The object that belong to Context
    /// </summary>
    public interface IContextObject : IExtensionObject<object>
    {
        /// <summary>
        /// Object's name
        /// </summary>
        string Name { set; get; }
        /// <summary>
        /// The instance of some service or other object if that can be preloaded
        /// </summary>
        object Object { set; get; }
        /// <summary>
        /// The class name that can create instance to Object
        /// </summary>
        string Class { set; get; }
        /// <summary>
        /// The property to set which included object,list or map
        /// </summary>
        IContextObjectProperty[] Property { set; get; }
        /// <summary>
        /// Whether the contextObject is created only when initialize
        /// If true, the object is static
        /// </summary>
        bool Singleton { set; get; }
        /// <summary>
        /// The refenrence of the object
        /// </summary>
        string Ref { set; get; } 
    }
}
